package com.fhao.aop.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * 测试AspectDemo中的切点能否在其他类上使用.
 */

@Order(1) //决定切面类的优先级,数字越小优先级越高
@Slf4j //日志打印
//@Component //将类对象交给spring管理
@Aspect //Spring使用了Aspectj的注解,具体实现是Spring实现的,不是这个注解实现的,Aspectj是一个第三方的iar包.
public class AspectDemo2 {

    @Before("com.fhao.aop.aspect.AspectDemo.pt()")
    public void doBefore() { //连接点: 方法
        log.info("AspectDemo2 do before....");
    }

    @After("com.fhao.aop.aspect.AspectDemo.pt()")
    public void doAfter() {
        log.info("AspectDemo2 do after....");
    }

//    @Around("com.fhao.aop.aspect.AspectDemo.pt()")
//    public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable { //必须要有返回结果.
//        log.info("AspectDemo2 do Around before...."); //优先级高于 Before
//        Object result = joinPoint.proceed();
//        log.info("AspectDemo2 do Around After"); //优先级低于 After
//        return result;
//    }

}










